二叉树的构造方法不一,这里根据存储结点次序的数字关系来构造父节点和孩子结点的关系(parentIndex*2+1==leftChildIndex,parentIndex*2+2==leftRightIndex),关于二叉树非递归遍历的详细介绍请看 二叉树的建立与遍历,下面程序还实现了查找叶子节点、查找某一元素是否存在的功能。
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class TestBinaryTree {
private int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private static List<Node> nodeList = null;
private static class Node {
int value;
Node leftChild;
Node rightChild;
public Node(int value) {
this.value = value;
leftChild = null;
rightChild = null;
}
}
/*
* 将给定的数组元素作为节点赋值到链表nodeList, 然后按照 array.length/2-1 个父节点与其孩子节点在链表的下标关系,
* 构造二叉树。注意最后一个父节点可能没有右孩子节点,需特殊处理。
*/
public Node createBinTree() {
nodeList